Unloading an extension has become an async operation, but we aren't
awaiting the result. That means that we recreate the extension
object *before* we remove the "old" extension object from the map,
with the effect that the reloaded extension is removed completely.
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6507
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2694>
let { uuid, dir, type } = oldExtension;
// Then unload the old extension.
- this.unloadExtension(oldExtension);
+ await this.unloadExtension(oldExtension);
// Now, recreate the extension and load it.
let newExtension;